import java.util.*;
/*给你两个整数数组 prices 和 strategy，其中：
prices[i] 表示第 i 天某股票的价格。
strategy[i] 表示第 i 天的交易策略，其中：
-1 表示买入一单位股票。
0 表示持有股票。
1 表示卖出一单位股票。
同时给你一个 偶数 整数 k，你可以对 strategy 进行 最多一次 修改。一次修改包括：
选择 strategy 中恰好 k 个 连续 元素。
将前 k / 2 个元素设为 0（持有）。
将后 k / 2 个元素设为 1（卖出）。
利润 定义为所有天数中 strategy[i] * prices[i] 的 总和 。
返回你可以获得的 最大 可能利润。
注意： 没有预算或股票持有数量的限制，因此所有买入和卖出操作均可行，无需考虑过去的操作。
输入： prices = [4,2,8], strategy = [-1,0,1], k = 2
输出： 10*/
public class Text {
    public static long compare(int[] pr, int[] str, int k) {
        int n = pr.length;
        long[] sum=new long[n+1];//原始利润
        long[] allsell=new long[n+1];//全部卖出利润
        for(int i=0;i<n;i++){
            sum[i+1]=sum[i]+(pr[i]*str[i]);
            allsell[i+1]=allsell[i]+(pr[i]);
        }
        long res=sum[n];//不修改的总利润
        for(int i=k;i<=n;i++){
            //结果=原始利润+窗口利润-变化量
            long ans=sum[i-k]+sum[n]-sum[i]+allsell[i]-allsell[i-k/2];
            res=Math.max(res,ans);
        }
        return res;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] pr = new int[n];
        for (int i = 0; i < n; i++) {
            pr[i] = sc.nextInt();
        }
        int[] str = new int[n];
        for (int i = 0; i < n; i++) {
            str[i] = sc.nextInt();
        }
        int k = sc.nextInt();
        long res = compare(pr, str, k);
        System.out.println(res);
    }
}